package player;

import powers.Power;
import powers.PowerSource;
import Items.ArmorType;
import Items.ImplementTypes;
import Items.WeaponCategory;
import Items.Weapons;

/**
 * for making player classes
 * 
 * @author bjarte
 * 
 */
public class PlayerClass
{

	String className;
	PowerSource powerSource;
	ArmorType[] armorProf;
	Weapons[] weaponProf;
	WeaponCategory[] weaponCategories;
	ImplementTypes[] implement;
	// AC Fort Ref Will
	int[] defenseBonus = new int[4];
	int hp;
	int hpprlvl;
	int healingsurges;
	ClassFeat[] classFeats;
	Power[] powers;

	/**
	 * Constructor for a class
	 * 
	 * @param className
	 *            name of the class.
	 */
	public PlayerClass(String className, PowerSource powerSource,
			ArmorType[] armorProf, Weapons[] weaponProf,
			WeaponCategory[] weaponCategories, ImplementTypes[] implement,
			int[] defBonus, int hp, int hpprlvl, int healingsurges,
			ClassFeat[] classFeats, Power[] powers)
	{
		this.className = className;
		this.powerSource = powerSource;
		this.armorProf = armorProf;
		this.weaponProf = weaponProf;
		this.weaponCategories = weaponCategories;
		this.implement = implement;
		this.defenseBonus = defBonus;
		this.hp = hp;
		this.hpprlvl = hpprlvl;
		this.healingsurges = healingsurges;
		this.classFeats = classFeats;
		this.powers = powers;
	}

	/**
	 * get the class name
	 * 
	 * @return class name
	 */
	public String getClassName()
	{
		return className;
	}

	/**
	 * powersource of the class
	 * 
	 * @return power source
	 */
	public PowerSource getPowerSource()
	{
		return powerSource;
	}

	/**
	 * with which armors the class i proficient with
	 * 
	 * @return
	 */
	public ArmorType[] getArmorProf()
	{
		return armorProf;
	}

	/**
	 * which weapons the class can use
	 * 
	 * @return array of weapons
	 */
	public Weapons[] getWeapons()
	{
		return weaponProf;
	}

	/**
	 * Which categories of weapons the class can use
	 * 
	 * @return array of weapon categories
	 */
	public WeaponCategory[] getWeaponCategories()
	{
		return weaponCategories;
	}

	/**
	 * which implement types the class uses
	 * 
	 * @return array of implement types
	 */
	public ImplementTypes[] getImplement()
	{
		return implement;
	}

	/**
	 * which defenses the class has bonuses in AC Fort Ref Will
	 * 
	 * @return int table of the bonuses
	 */
	public int[] getDefenseBonus()
	{
		return defenseBonus;
	}

	/**
	 * returns how many hp the class starts with
	 * 
	 * @return hit points
	 */
	public int getHp()
	{
		return hp;
	}

	/**
	 * how many hp the class gains pr lvl.
	 * 
	 * @return hit points
	 */
	public int getHpprlvl()
	{
		return hpprlvl;
	}

	/**
	 * returns how many healingsurges the class has
	 * 
	 * @return healing surges
	 */
	public int getHealingsurges()
	{
		return healingsurges;
	}

	/**
	 * the feats of the class
	 * 
	 * @return array of class feats
	 */
	public ClassFeat[] getClassFeats()
	{
		return classFeats;
	}

	/**
	 * class powers
	 * 
	 * @return array of class powers
	 */
	public Power[] getPowers()
	{
		return powers;
	}
}